package com.example.icongyou;


import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import com.example.icongyou.api.TeacherApi;
import com.example.icongyou.bean.Teacher;
import com.example.icongyou.retrofit.RetrofitClient;
import com.example.icongyou.utils.SessionManager;
import com.google.android.material.textfield.TextInputEditText;

import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;

public class LoginActivity extends AppCompatActivity {

    private TextInputEditText tenantEditText;
    private TextInputEditText usernameEditText;
    private TextInputEditText passwordEditText;
    private CheckBox rememberPasswordCheckBox;
    private Button loginButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        // 初始化视图
        initViews();

        // 设置登录按钮点击事件
        loginButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                attemptLogin();
            }
        });
    }

    private void initViews() {
        tenantEditText = findViewById(R.id.tenant_edit_text);
        usernameEditText = findViewById(R.id.username_edit_text);
        passwordEditText = findViewById(R.id.password_edit_text);
        rememberPasswordCheckBox = findViewById(R.id.remember_password_checkbox);
        loginButton = findViewById(R.id.login_button);
        tenantEditText.setText("东北大学");
        usernameEditText.setText("00001111"); // 可以设置默认教师ID，如："10001"
        passwordEditText.setText("12345678"); // 可以设置默认密码
    }

    private void attemptLogin() {
        String tenant = tenantEditText.getText().toString().trim();
        String username = usernameEditText.getText().toString().trim(); // 教师ID
        String password = passwordEditText.getText().toString().trim();

        // 租户校验：必须是“东北大学”
        if (!tenant.equals("东北大学")) {
            tenantEditText.setError("租户必须是 东北大学");
            Toast.makeText(this, "租户信息错误", Toast.LENGTH_SHORT).show();
            return;
        }

        // 简单的表单验证
        if (username.isEmpty()) {
            usernameEditText.setError("教师ID不能为空");
            return;
        }

        if (password.isEmpty()) {
            passwordEditText.setError("密码不能为空");
            return;
        }

        // 禁用按钮防止重复点击
        loginButton.setEnabled(false);
        // 执行登录逻辑
        performLogin(username, password);
    }

    private void performLogin(String teacherId, String password) {
        // 1. 获取 TeacherApi 实例
        TeacherApi api = RetrofitClient.getTeacherApi();

        // 2. 调用 API 查询教师信息
        Call<Teacher> call = api.getTeacherById(teacherId);

        call.enqueue(new Callback<Teacher>() {
            @Override
            public void onResponse(Call<Teacher> call, Response<Teacher> response) {
                loginButton.setEnabled(true); // 重新启用按钮

                if (response.isSuccessful() && response.body() != null) {
                    Teacher teacher = response.body();

                    // 3. 密码比对
                    // **注意：在实际应用中，密码应该在后端进行加密比对（例如BCrypt）。
                    // 这里的直接比对只适用于后端未加密存储密码或仅为演示。**
                    if (teacher.getPassword().equals(password)) {
                        // 登录成功
                        SessionManager sessionManager = new SessionManager(LoginActivity.this);
                        sessionManager.createLoginSession(teacher.getTeacherId(), teacher.getName());
                        Toast.makeText(LoginActivity.this, "登录成功，欢迎您" + teacher.getName()+"老师", Toast.LENGTH_LONG).show();

                        // TODO: 保存用户登录状态（如 SharedPreferences）
                         //跳转到主界面
                         Intent intent = new Intent(LoginActivity.this, BottomMenuActivity.class);
                         startActivity(intent);
                         finish();
                    } else {
                        // 密码错误
                        passwordEditText.setError("密码错误");
                        Toast.makeText(LoginActivity.this, "教师ID或密码不正确", Toast.LENGTH_SHORT).show();
                    }

                } else if (response.code() == 404) {
                    // 404 通常表示未找到资源 (即教师ID不存在)
                    usernameEditText.setError("教师ID不存在");
                    Toast.makeText(LoginActivity.this, "教师ID不存在", Toast.LENGTH_SHORT).show();
                } else {
                    // 其他 API 错误（例如 500 服务器错误）
                    String errorMsg = "登录失败: 错误码 " + response.code();
                    Toast.makeText(LoginActivity.this, errorMsg, Toast.LENGTH_LONG).show();
                }
            }

            @Override
            public void onFailure(Call<Teacher> call, Throwable t) {
                loginButton.setEnabled(true); // 重新启用按钮
                // 网络或连接错误
                Toast.makeText(LoginActivity.this, "网络请求失败：" + t.getMessage(), Toast.LENGTH_LONG).show();
            }
        });
    }
}